<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of utilClass
 *
 * @author USUARIO
 */
class utilClass
{
  
    /*Datos obtenidos de la tabla dominio
     * ->nombre parametro tabla = moneda
     * ->id     parametro tabla = 3
     * ->estado 1 (activo) || estado 2 (desactivado)
     */
    public function listaTipoMoneda()
    {
        $criteria = new Criteria();
        $criteria->add(DominioPeer::TABLA,'moneda');
        $criteria->add(DominioPeer::TABLA_ID,3);
        $criteria->add(DominioPeer::ESTADO,1);
        return DominioPeer::doSelect($criteria);        
    }
    
    public function listaEstado()
    {
        $criteria = new Criteria();
        $criteria->add(DominioPeer::TABLA,'estado');
        $criteria->add(DominioPeer::TABLA_ID,2);
        $criteria->add(DominioPeer::ESTADO,1);
        return DominioPeer::doSelect($criteria);        
    }
    
    public function listaRegimen()
    {
        $criteria = new Criteria();
        $criteria->add(DominioPeer::TABLA,'regimen');
        $criteria->add(DominioPeer::TABLA_ID,1);
        $criteria->add(DominioPeer::ESTADO,1);
        return DominioPeer::doSelect($criteria);        
    }
    
    /*Retorna la lista de banco*/
    public function listaBanco($estado = 1)
    {
       $criteria = new Criteria();
       $criteria->add(BancoPeer::ESTADO,$estado);
       return BancoPeer::doSelect($criteria);
    }
    
    public function getBanco($valor=-1,$tipoBusqueda= "id")
    {
       $criteria = new Criteria();
       if($tipoBusqueda=="id")
       {
           $criteria->add(BancoPeer::ID, $valor);
       } 
       else
       {
           $criteria->add(BancoPeer::NOMBRE, $valor);
       }
       return BancoPeer::doSelect($criteria);       
    }
    
    
    
    /*Metodo para agregar un detalle de informacion bancaria
     * este metodo es invocado cuando se esta registrado un cliente,agencia
     * y recibe los siguientes parametros
     * $sessionName = es el nombre la session que maneja los datos tipo informacion(nombreBanco,Cuenta,moneda)
     * $idTabla     = la tabla InformacionBancaria puede ser utilizada en para varios modulos.
     * $idRelacion  = es el id del Cliente o Agencia , ...
     */    
        #id_tabla 1 :  cliente    
        #id_tabla 2 :  agencia    
        #id_tabla 3 :    
    public function ingresarDetalleInformacionBancaria($sessionName,$idTabla,$idRelacion)
    {        

        $arrayRespuesta =  array("success"=>false,"mensaje"=>"No existe detalle","objecto"=>null,"code"=>603);
        $transaccion = Propel::getConnection();
        $transaccion->beginTransaction();
        $detalleInformacionBancaria   =  sfContext::getInstance()->getUser()->getAttribute($sessionName,null);   
        if($detalleInformacionBancaria!=null)
        {  
             foreach($detalleInformacionBancaria as $row)
             {
                  try
                  {
                      $detalle= new InformacionBancaria();
                      $detalle->setIdTabla($idTabla);
                      $detalle->setIdRelacion($idRelacion);
                      $detalle->setNombreBanco($row['nombreBanco']);
                      $detalle->setCuenta($row['cuentaBanco']);
                      if($row['isCombox'])
                      {
                         $detalle->setBancoId($row['idCombox']);
                      }                      
                      if($row["moneda"]=="soles"){$moneda=1;}
                      if($row["moneda"]=="dolares"){$moneda=2;}
                     
                      $detalle->setMonedaId($moneda);
                      $detalle->setEstado(1);
                      $detalle->save();
                  }
                  catch (Exception $e)
                  {
                      $transaccion->rollBack();
                      Propel::close();
                      $arrayRespuesta['mensaje'] = $e->getMessage();
                      $arrayRespuesta['code']    = 601;
                      return $arrayRespuesta;
                  }
             }        

             $arrayRespuesta['success'] = true;                       
             $arrayRespuesta['mensaje']  = "Exito";
             $transaccion->commit();
             Propel::close();
             sfContext::getInstance()->getUser()->setAttribute($sessionName, null);
             
        }
        else
        {
           $arrayRespuesta['success'] = true;                       
           $arrayRespuesta['mensaje']  = "Exito(no tiene detalle)";
           $transaccion->commit(); 
        }
        return $arrayRespuesta;
    }
    
    public function eliminarDetalleInfomacionBancaria($sessionName,$idTabla,$idRelacion)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"No existe detalle","objecto"=>null,"code"=>603); 
        $detalleInformacionBancaria   =  sfContext::getInstance()->getUser()->getAttribute($sessionName,null);
        if($detalleInformacionBancaria!=null)
        {  
             foreach($detalleInformacionBancaria as $row)
             {
                 try 
                 {
                      $detalle= InformacionBancariaPeer::retrieveByPK($row['id'], $idTabla, $idRelacion);
                      if(is_object($detalle))
                      {
                          
                          $detalle->delete();
                      }
                     
                 } catch (Exception $e)
                 {      
                      $arrayRespuesta['mensaje'] = $e->getMessage();
                      $arrayRespuesta['code']    = 601;
                      return $arrayRespuesta;
                 }              
             }
       }
       sfContext::getInstance()->getUser()->setAttribute($sessionName, null);
       return $arrayRespuesta;
    }
    /*Este metodo contendra la lista temporal del detalle de informacion bancaria
     * actualizara detalle x detalle y si no ecuentra uno lo agrego utilizando la logica
     * del metodo <ingresarDetalleInformacionBancaria>
     */
    public function editarDetalleInfomacionBancaria($sessionName,$idTabla,$idRelacion)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"No existe detalle","objecto"=>null,"code"=>603);  
        $detalleInformacionBancaria   =  sfContext::getInstance()->getUser()->getAttribute($sessionName,null);   
        if($detalleInformacionBancaria!=null)
        {  
             foreach($detalleInformacionBancaria as $row)
             {
                 try 
                 {
                      $detalle= InformacionBancariaPeer::retrieveByPK($row['id'], $idTabla, $idRelacion);
                      if(is_object($detalle))
                      {
                            $detalle->setIdTabla($idTabla);
                            $detalle->setIdRelacion($idRelacion);
                            $detalle->setNombreBanco($row['nombreBanco']);
                            $detalle->setCuenta($row['cuentaBanco']);
                            
                            if($row["moneda"]=="soles")   { $moneda=1; }
                            if($row["moneda"]=="dolares") { $moneda=2; }
                            if($row['isCombox'])
                            {
                               $detalle->setBancoId($row['idCombox']);
                            } 

                            $detalle->setMonedaId($moneda);
                            $detalle->setEstado(1);
                            $detalle->save();
                      }
                      /*Si no lo encuentro es por que es nuevo asi que lo agrego*/
                      else
                      {
                            $detalle= new InformacionBancaria();
                            $detalle->setIdTabla($idTabla);
                            $detalle->setIdRelacion($idRelacion);
                            $detalle->setNombreBanco($row['nombreBanco']);
                            $detalle->setCuenta($row['cuentaBanco']);
                            if($row["moneda"]=="soles")   { $moneda=1; }
                            if($row["moneda"]=="dolares") { $moneda=2; }                            
                            if($row['isCombox'])
                            {
                               $detalle->setBancoId($row['idCombox']);
                            }  
                            $detalle->setMonedaId($moneda);
                            $detalle->setEstado(1);
                            $detalle->save();
                      }
                      
                        $arrayRespuesta['success'] = true;                       
                        $arrayRespuesta['mensaje']  = "Exito";
                      
                     
                 } catch (Exception $e)
                 {                      
                     
                      $arrayRespuesta['mensaje'] = $e->getMessage();
                      $arrayRespuesta['code']    = 601;
                      return $arrayRespuesta;
                 }              
             }
       }
       else
       {
           $arrayRespuesta['success'] = true;                       
           $arrayRespuesta['mensaje']  = "Exito (No existe session)";
       }
       sfContext::getInstance()->getUser()->setAttribute($sessionName, null);
       return $arrayRespuesta;
       
    }
    
    
    
}

?>
